1 Introduction: Mapping of broad research field around EIST in v2

Here are preliminary results of the bibliometric mapping of EIST. Its purpose is:

The method for the research-field-mapping can be reviewed here:

Rakas, M., & Hain, D. S. (2019). The state of innovation system research: What happens beneath the surface?. Research Policy, 48(9), 103787.

Note: The analysis in this document depicts the larger research field around the department, thereby all analysis results are based on the publications of the department plus related

2 General Overview over the research field

Note: This section provides basic descriptives of th identified research fielld, including number of articles over time, countries, institutions, and authors. See Technical descriptionfor additional explanations.

2.1 Main Indicators: Publications, Authors, Countries

2.2 Connection between the research field’s Top Authors-Keywords-Journals

3 Topic modelling

Note: Here, we report the results of a LDA topic-modelling (basically, clustering on words) on all title+abstract texts. Identified topics can be interpreted as broad themes in the research field. See Technical descriptionfor additional explanations.

3.1 Topics by topwords

Note: While this static vies is helpful, I recommend using the interactive LDAVis version to be found under https://daniel-hain.github.io/biblio_lux_2022/output/topic_modelling/LDAviz_eist_v2/index.html#topic=1&lambda=0.60&term=. For functionality and usage, see ´Technical ´.

4 Knowledge Bases: Co-Citation network analysis

Note: This analysis refers the co-citation analysis, where the cited references and not the original publications are the unit of analysis. Identified knowledge bases can be interpreted as the knowledge foundation the field draws from. See Technical descriptionfor additional explanations.

name dgr_int dgr
Knowledge Base 1: KB 1: unlabeled (n = 268, density =11.72)
GEELS F.W. TECHNOLOGICAL TRANSITIONS AS EVOLUTIONARY RECONFIGURATION PROCESSES: A MULTI-LEVEL PERSPECTIVE AND A CASE-STUDY (2002) 1106 3213
GEELS F.W. SCHOT J. TYPOLOGY OF SOCIOTECHNICAL TRANSITION PATHWAYS (2007) 876 2581
GEELS F.W. THE MULTI-LEVEL PERSPECTIVE ON SUSTAINABILITY TRANSITIONS: RESPONSES TO SEVEN CRITICISMS (2011) 534 1692
RIP A. KEMP R. TECHNOLOGICAL CHANGE (1998) 355 796
GEELS F.W. FROM SECTORAL SYSTEMS OF INNOVATION TO SOCIO-TECHNICAL SYSTEMS: INSIGHTS ABOUT DYNAMICS AND CHANGE FROM SOCIOLOGY AND INSTITUTIONAL THEO... 308 1038
UNRUH G.C. UNDERSTANDING CARBON LOCK-IN (2000) 251 606
GEELS F.W. ONTOLOGIES SOCIO-TECHNICAL TRANSITIONS (TO SUSTAINABILITY) 223 645
SHOVE E. WALKER G. GOVERNING TRANSITIONS IN THE SUSTAINABILITY OF EVERYDAY LIFE (2010) 182 362
GEELS F.W. A SOCIO-TECHNICAL ANALYSIS OF LOW-CARBON TRANSITIONS: INTRODUCING THE MULTI-LEVEL PERSPECTIVE INTO TRANSPORT STUDIES (2012) 148 356
SMITH A. VOß J.P. GRIN J. INNOVATION STUDIES AND SUSTAINABILITY TRANSITIONS: THE ALLURE OF THE MULTI-LEVEL PERSPECTIVE AND ITS CHALLENGES (2010) 124 236
Knowledge Base 2: KB 2: unlabeled (n = 199, density =12.64)
MARKARD J. RAVEN R. TRUFFER B. SUSTAINABILITY TRANSITIONS: AN EMERGING FIELD OF RESEARCH AND ITS PROSPECTS (2012) 596 2920
COENEN L. BENNEWORTH P. TRUFFER B. TOWARD A SPATIAL PERSPECTIVE ON SUSTAINABILITY TRANSITIONS (2012) 418 1283
HANSEN T. COENEN L. THE GEOGRAPHY OF SUSTAINABILITY TRANSITIONS: REVIEW SYNTHESIS AND REFLECTIONS ON AN EMERGENT RESEARCH FIELD (2015) 329 789
RAVEN R. SCHOT J. BERKHOUT F. SPACE AND SCALE IN SOCIO-TECHNICAL TRANSITIONS (2012) 248 535
HODSON M. MARVIN S. CAN CITIES SHAPE SOCIO-TECHNICAL TRANSITIONS AND HOW WOULD WE KNOW IF THEY WERE? (2010) 221 612
KÖHLER J. GEELS F.W. KERN F. MARKARD J. ONSONGO E. WIECZOREK A. ALKEMADE F. WELLS P. AN AGENDA FOR SUSTAINABILITY TRANSITIONS RESEARCH: STATE OF TH... 217 706
TRUFFER B. MURPHY J.T. RAVEN R. THE GEOGRAPHY OF SUSTAINABILITY TRANSITIONS: CONTOURS OF AN EMERGING THEME (2015) 130 272
COENEN L. TRUFFER B. PLACES AND SPACES OF SUSTAINABILITY TRANSITIONS: GEOGRAPHICAL CONTRIBUTIONS TO AN EMERGING RESEARCH AND POLICY FIELD (2012) 127 233
FUENFSCHILLING L. BINZ C. GLOBAL SOCIO-TECHNICAL REGIMES (2018) 110 309
SENGERS F. RAVEN R. TOWARD A SPATIAL PERSPECTIVE ON NICHE DEVELOPMENT: THE CASE OF BUS RAPID TRANSIT (2015) 101 273
Knowledge Base 3: KB 3: unlabeled (n = 167, density =13.48)
KEMP R. SCHOT J. HOOGMA R. REGIME SHIFTS TO SUSTAINABILITY THROUGH PROCESSES OF NICHE FORMATION: THE APPROACH OF STRATEGIC NICHE MANAGEMENT (1998) 425 2236
SCHOT J. GEELS F.W. STRATEGIC NICHE MANAGEMENT AND SUSTAINABLE INNOVATION JOURNEYS: THEORY FINDINGS RESEARCH AGENDA AND POLICY (2008) 257 1057
FARLA J. MARKARD J. RAVEN R. COENEN L. SUSTAINABILITY TRANSITIONS IN THE MAKING: A CLOSER LOOK AT ACTORS STRATEGIES AND RESOURCES (2012) 211 851
BATTILANA J. LECA B. BOXENBAUM E. HOW ACTORS CHANGE INSTITUTIONS: TOWARDS A THEORY OF INSTITUTIONAL ENTREPRENEURSHIP (2009) 140 204
AVELINO F. WITTMAYER J.M. SHIFTING POWER RELATIONS IN SUSTAINABILITY TRANSITIONS: A MULTI-ACTOR PERSPECTIVE (2016) 118 428
FUENFSCHILLING L. TRUFFER B. THE STRUCTURATION OF SOCIO-TECHNICAL REGIMES—CONCEPTUAL FOUNDATIONS FROM INSTITUTIONAL THEORY (2014) 115 422
LAWRENCE T.B. SUDDABY R. INSTITUTIONS AND INSTITUTIONAL WORK (2006) 111 154
BOLTON R. HANNON M. GOVERNING SUSTAINABILITY TRANSITIONS THROUGH BUSINESS MODEL INNOVATION: TOWARDS A SYSTEMS UNDERSTANDING (2016) 85 126
CHESBROUGH H. BUSINESS MODEL INNOVATION: OPPORTUNITIES AND BARRIERS (2010) 74 104
FLIGSTEIN N. SOCIAL SKILL AND INSTITUTIONAL THEORY (1997) 74 110
Knowledge Base 4: KB 4: unlabeled (n = 155, density =32.3)
BERGEK A. JACOBSSON S. CARLSSON B. LINDMARK S. RICKNE A. ANALYZING THE FUNCTIONAL DYNAMICS OF TECHNOLOGICAL INNOVATION SYSTEMS: A SCHEME OF ANALYSI... 734 1437
HEKKERT M.P. SUURS R.A.A. NEGRO S.O. KUHLMANN S. SMITS R.E.H.M. FUNCTIONS OF INNOVATION SYSTEMS: A NEW APPROACH FOR ANALYSING TECHNOLOGICAL CHANGE ... 396 780
CARLSSON B. STANKIEWICZ R. ON THE NATURE FUNCTION AND COMPOSITION OF TECHNOLOGICAL SYSTEMS (1991) 383 522
MARKARD J. TRUFFER B. TECHNOLOGICAL INNOVATION SYSTEMS AND THE MULTI-LEVEL PERSPECTIVE: TOWARDS AN INTEGRATED FRAMEWORK (2008) 373 885
BERGEK A. HEKKERT M. JACOBSSON S. MARKARD J. SANDÉN B. TRUFFER B. TECHNOLOGICAL INNOVATION SYSTEMS IN CONTEXTS: CONCEPTUALIZING CONTEXTUAL STRUCTUR... 294 437
JACOBSSON S. BERGEK A. INNOVATION SYSTEM ANALYSES AND SUSTAINABILITY TRANSITIONS: CONTRIBUTIONS AND SUGGESTIONS FOR RESEARCH (2011) 231 361
DEWALD U. TRUFFER B. THE LOCAL SOURCES OF MARKET FORMATION: EXPLAINING REGIONAL GROWTH DIFFERENTIALS IN GERMAN PHOTOVOLTAIC MARKETS (2012) 199 367
JACOBSSON S. BERGEK A. TRANSFORMING THE ENERGY SECTOR: THE EVOLUTION OF TECHNOLOGICAL SYSTEMS IN RENEWABLE ENERGY TECHNOLOGY (2004) 194 280
WIECZOREK A.J. HEKKERT M.P. SYSTEMIC INSTRUMENTS FOR SYSTEMIC INNOVATION PROBLEMS: A FRAMEWORK FOR POLICY MAKERS AND INNOVATION SCHOLARS (2012) 194 322
MUSIOLIK J. MARKARD J. CREATING AND SHAPING INNOVATION SYSTEMS: FORMAL NETWORKS IN THE INNOVATION SYSTEM FOR STATIONARY FUEL CELLS IN GERMANY (2011) 169 254
Knowledge Base 5: KB 5: unlabeled (n = 134, density =21.74)
SMITH A. STIRLING A. BERKHOUT F. THE GOVERNANCE OF SUSTAINABLE SOCIO-TECHNICAL TRANSITIONS (2005) 323 1212
MEADOWCROFT J. ENGAGING WITH THE POLITICS OF SUSTAINABILITY TRANSITIONS (2011) 241 679
MEADOWCROFT J. WHAT ABOUT THE POLITICS? SUSTAINABLE DEVELOPMENT TRANSITION MANAGEMENT AND LONG TERM ENERGY TRANSITIONS (2009) 202 434
AVELINO F. ROTMANS J. POWER IN TRANSITION: AN INTERDISCIPLINARY FRAMEWORK TO STUDY POWER IN RELATION TO STRUCTURAL CHANGE (2009) 191 517
SHOVE E. WALKER G. CAUTION! TRANSITIONS AHEAD: POLITICS PRACTICE AND SUSTAINABLE TRANSITION MANAGEMENT (2007) 164 523
SMITH A. TRANSLATING SUSTAINABILITIES BETWEEN GREEN NICHES AND SOCIO-TECHNICAL REGIMES (2007) 154 549
LOORBACH D. TRANSITION MANAGEMENT FOR SUSTAINABLE DEVELOPMENT: A PRESCRIPTIVE COMPLEXITY-BASED GOVERNANCE FRAMEWORK (2010) 150 462
ROTMANS J. KEMP R. VAN ASSELT M. MORE EVOLUTION THAN REVOLUTION: TRANSITION MANAGEMENT IN PUBLIC POLICY (2001) 123 407
AVELINO F. GRIN J. PEL B. JHAGROE S. THE POLITICS OF SUSTAINABILITY TRANSITIONS (2016) 119 366
SMITH A. VOß J.-P. GRIN J. INNOVATION STUDIES AND SUSTAINABILITY TRANSITIONS: THE ALLURE OF THE MULTI-LEVEL PERSPECTIVE AND ITS CHALLENGES (2010) 94 392
Knowledge Base 6: KB 6: unlabeled (n = 128, density =29.02)
SMITH A. RAVEN R. WHAT IS PROTECTIVE SPACE? RECONSIDERING NICHES IN TRANSITIONS TO SUSTAINABILITY (2012) 392 2288
HARGREAVES T. HIELSCHER S. SEYFANG G. SMITH A. GRASSROOTS INNOVATIONS IN COMMUNITY ENERGY: THE ROLE OF INTERMEDIARIES IN NICHE DEVELOPMENT (2013) 263 374
KIVIMAA P. BOON W. HYYSALO S. KLERKX L. TOWARDS A TYPOLOGY OF INTERMEDIARIES IN SUSTAINABILITY TRANSITIONS: A SYSTEMATIC REVIEW AND A RESEARCH AGEN... 220 384
KIVIMAA P. GOVERNMENT-AFFILIATED INTERMEDIARY ORGANISATIONS AS ACTORS IN SYSTEM-LEVEL TRANSITIONS (2014) 220 294
SEYFANG G. SMITH A. GRASSROOTS INNOVATIONS FOR SUSTAINABLE DEVELOPMENT: TOWARDS A NEW RESEARCH AND POLICY AGENDA (2007) 193 430
HOWELLS J. INTERMEDIATION AND THE ROLE OF INTERMEDIARIES IN INNOVATION (2006) 193 248
MIGNON I. KANDA W. A TYPOLOGY OF INTERMEDIARY ORGANIZATIONS AND THEIR IMPACT ON SUSTAINABILITY TRANSITION POLICIES (2018) 187 231
KIVIMAA P. HYYSALO S. BOON W. KLERKX L. MARTISKAINEN M. SCHOT J. PASSING THE BATON: HOW INTERMEDIARIES ADVANCE SUSTAINABILITY TRANSITIONS IN DIFFER... 169 249
HYYSALO S. JUNTUNEN J.K. MARTISKAINEN M. ENERGY INTERNET FORUMS AS ACCELERATION PHASE TRANSITION INTERMEDIARIES (2018) 140 220
VAN LENTE H. HEKKERT M. SMITS R. VAN WAVEREN B. ROLES OF SYSTEMIC INTERMEDIARIES IN TRANSITION PROCESSES (2003) 125 161
Knowledge Base 7: KB 7: unlabeled (n = 90, density =37.7)
GEELS F.W. REGIME RESISTANCE AGAINST LOW-CARBON TRANSITIONS: INTRODUCING POLITICS AND POWER INTO THE MULTI-LEVEL PERSPECTIVE (2014) 266 1049
KIVIMAA P. KERN F. CREATIVE DESTRUCTION OR MERE NICHE SUPPORT? INNOVATION POLICY MIXES FOR SUSTAINABILITY TRANSITIONS (2016) 180 727
TURNHEIM B. GEELS F.W. THE DESTABILISATION OF EXISTING REGIMES: CONFRONTING A MULTI-DIMENSIONAL FRAMEWORK WITH A CASE STUDY OF THE BRITISH COAL IND... 176 340
BERGGREN C. MAGNUSSON T. SUSHANDOYO D. TRANSITION PATHWAYS REVISITED: ESTABLISHED FIRMS AS MULTI-LEVEL ACTORS IN THE HEAVY VEHICLE INDUSTRY (2015) 165 365
KUNGL G. GEELS F.W. SEQUENCE AND ALIGNMENT OF EXTERNAL PRESSURES IN INDUSTRY DESTABILISATION: UNDERSTANDING THE DOWNFALL OF INCUMBENT UTILITIES IN ... 145 197
GEELS F.W. RECONCEPTUALISING THE CO-EVOLUTION OF FIRMS-IN-INDUSTRIES AND THEIR ENVIRONMENTS: DEVELOPING AN INTER-DISCIPLINARY TRIPLE EMBEDDEDNESS F... 124 286
VAN MOSSEL A. VAN RIJNSOEVER F.J. HEKKERT M.P. NAVIGATORS THROUGH THE STORM: A REVIEW OF ORGANIZATION THEORIES AND THE BEHAVIOR OF INCUMBENT FIRMS ... 106 182
STEEN M. WEAVER T. INCUMBENTS’ DIVERSIFICATION AND CROSS-SECTORIAL ENERGY INDUSTRY DYNAMICS (2017) 93 126
KUNGL G. STEWARDS OR STICKLERS FOR CHANGE? INCUMBENT ENERGY PROVIDERS AND THE POLITICS OF THE GERMAN ENERGY TRANSITION (2015) 91 116
HESS D.J. SUSTAINABILITY TRANSITIONS: A POLITICAL COALITION PERSPECTIVE (2014) 87 361

5 Research Areas: Bibliographic coupling analysis

Note: This analysis refers the bibliographic coupling analysis, where original publications are the unit of analysis. Identified research areas can be interpreted as the field’s current research frontier. See Technical descriptionfor additional explanations.

AU PY TI dgr_int TC TC_year
Research Area 1: RA 1: unlabeled (n = 172, density =0.6)
NA NA NA 3.57 NA NA
NA NA NA 0.50 NA NA
PATTERSON J;SCHULZ K;V... 2017 EXPLORING THE GOVERNANCE AND POLITICS OF TRANSFORMATIONS TOWARDS SUSTAINABILITY 1.26 289 57.80
NA NA NA 1.31 NA NA
NA NA NA 1.09 NA NA
BOCKEN NMP;SHORT SW 2016 TOWARDS A SUFFICIENCY-DRIVEN BUSINESS MODEL: EXPERIENCES AND OPPORTUNITIES 0.06 210 35.00
BOCKEN NMP;SCHUIT CSC;... 2018 EXPERIMENTING WITH A CIRCULAR BUSINESS MODEL: LESSONS FROM EIGHT CASES 0.18 190 47.50
PRENDEVILLE S;CHERIM E... 2018 CIRCULAR CITIES: MAPPING SIX CITIES IN TRANSITION 0.03 168 42.00
MARKARD J;SUTER M;INGO... 2016 SOCIO-TECHNICAL TRANSITIONS AND POLICY CHANGE - ADVOCACY COALITIONS IN SWISS ENERGY POLICY 2.34 167 27.83
RAVEN R;KERN F;VERHEES... 2016 NICHE CONSTRUCTION AND EMPOWERMENT THROUGH SOCIO-POLITICAL WORK. A META-ANALYSIS OF SIX LOW-CARBON TECHNOLOGY CASES 1.91 166 27.67
Research Area 2: RA 2: unlabeled (n = 117, density =0.7)
NA NA NA 1.73 NA NA
NA NA NA 2.17 NA NA
NA NA NA 1.15 NA NA
NA NA NA 0.84 NA NA
FEOLA G 2020 CAPITALISM IN SUSTAINABILITY TRANSITIONS RESEARCH: TIME FOR A CRITICAL TURN? 0.95 91 45.50
WILLIAMS S;DOYON A 2019 JUSTICE IN ENERGY TRANSITIONS 1.02 87 29.00
OLAZABAL M;PASCUAL U 2016 USE OF FUZZY COGNITIVE MAPS TO STUDY URBAN RESILIENCE AND TRANSFORMATION 0.11 76 12.67
NA NA NA 0.47 NA NA
BINZ C;COENEN L;MURPHY... 2020 GEOGRAPHIES OF TRANSITION—FROM TOPICAL CONCERNS TO THEORETICAL ENGAGEMENT: A COMMENTARY ON THE TRANSITIONS RESEARCH AGENDA 1.71 67 33.50
NA NA NA 1.38 NA NA
Research Area 3: RA 3: unlabeled (n = 85, density =0.73)
KÖHLER J;GEELS FW;KERN... 2019 AN AGENDA FOR SUSTAINABILITY TRANSITIONS RESEARCH: STATE OF THE ART AND FUTURE DIRECTIONS 0.43 825 275.00
HÖLSCHER K;WITTMAYER J... 2018 TRANSITION VERSUS TRANSFORMATION: WHAT'S THE DIFFERENCE? 0.21 131 32.75
HESS DJ 2016 THE POLITICS OF NICHE-REGIME CONFLICTS: DISTRIBUTED SOLAR ENERGY IN THE UNITED STATES 0.16 106 17.67
KERN F;ROGGE KS 2018 HARNESSING THEORIES OF THE POLICY PROCESS FOR ANALYSING THE POLITICS OF SUSTAINABILITY TRANSITIONS: A CRITICAL SURVEY 0.97 87 21.75
ROSENBLOOM D 2018 FRAMING LOW-CARBON PATHWAYS: A DISCURSIVE ANALYSIS OF CONTENDING STORYLINES SURROUNDING THE PHASE-OUT OF COAL-FIRED POWER ... 0.88 68 17.00
KUNGL G;GEELS FW 2018 SEQUENCE AND ALIGNMENT OF EXTERNAL PRESSURES IN INDUSTRY DESTABILISATION: UNDERSTANDING THE DOWNFALL OF INCUMBENT UTILITIE... 0.31 64 16.00
TURNHEIM B;SOVACOOL BK 2020 FOREVER STUCK IN OLD WAYS? PLURALISING INCUMBENCIES IN SUSTAINABILITY TRANSITIONS 1.58 57 28.50
HEISKANEN E;APAJALAHTI... 2018 INCUMBENT ENERGY COMPANIES NAVIGATING ENERGY TRANSITIONS: STRATEGIC ACTION OR BRICOLAGE? 0.36 48 12.00
NA NA NA 0.13 NA NA
NIKAS A;STAVRAKAS V;AR... 2020 BARRIERS TO AND CONSEQUENCES OF A SOLAR-BASED ENERGY TRANSITION IN GREECE 0.08 46 23.00
Research Area 4: RA 4: unlabeled (n = 82, density =1.22)
NA NA NA 1.54 NA NA
NA NA NA 2.85 NA NA
NA NA NA 0.93 NA NA
NA NA NA 2.70 NA NA
NA NA NA 0.03 NA NA
LAUBER V;JACOBSSON S 2016 THE POLITICS AND ECONOMICS OF CONSTRUCTING, CONTESTING AND RESTRICTING SOCIO-POLITICAL SPACE FOR RENEWABLES - THE GERMAN R... 0.13 108 18.00
REICHARDT K;ROGGE K 2016 HOW THE POLICY MIX IMPACTS INNOVATION: FINDINGS FROM COMPANY CASE STUDIES ON OFFSHORE WIND IN GERMANY 0.38 77 12.83
HAFNER S;JONES A;ANGER... 2020 CLOSING THE GREEN FINANCE GAP – A SYSTEMS PERSPECTIVE 0.06 76 38.00
NA NA NA 1.09 NA NA
TZIVA M;NEGRO SO;KALFA... 2020 UNDERSTANDING THE PROTEIN TRANSITION: THE RISE OF PLANT-BASED MEAT SUBSTITUTES 1.52 73 36.50
Research Area 5: RA 5: unlabeled (n = 43, density =1.21)
HOJNIK J;RUZZIER M 2016 WHAT DRIVES ECO-INNOVATION? A REVIEW OF AN EMERGING LITERATURE 0.12 298 49.67
HORBACH J 2016 EMPIRICAL DETERMINANTS OF ECO-INNOVATION IN EUROPEAN COUNTRIES USING THE COMMUNITY INNOVATION SURVEY 0.13 102 17.00
HEKKERT MP;JANSSEN MJ;... 2020 MISSION-ORIENTED INNOVATION SYSTEMS 0.19 80 40.00
KIVIMAA P;HYYSALO S;BO... 2019 PASSING THE BATON: HOW INTERMEDIARIES ADVANCE SUSTAINABILITY TRANSITIONS IN DIFFERENT PHASES 1.01 79 26.33
NA NA NA 0.13 NA NA
MARTISKAINEN M;KIVIMAA P 2018 CREATING INNOVATIVE ZERO CARBON HOMES IN THE UNITED KINGDOM — INTERMEDIARIES AND CHAMPIONS IN BUILDING PROJECTS 0.52 58 14.50
MIGNON I;KANDA W 2018 A TYPOLOGY OF INTERMEDIARY ORGANIZATIONS AND THEIR IMPACT ON SUSTAINABILITY TRANSITION POLICIES 0.95 48 12.00
CLAUSEN J;FICHTER K 2019 THE DIFFUSION OF ENVIRONMENTAL PRODUCT AND SERVICE INNOVATIONS: DRIVING AND INHIBITING FACTORS 0.27 40 13.33
KANDA W;KUISMA M;KIVIM... 2020 CONCEPTUALISING THE SYSTEMIC ACTIVITIES OF INTERMEDIARIES IN SUSTAINABILITY TRANSITIONS 1.61 36 18.00
TURNHEIM B;ASQUITH M;G... 2020 MAKING SUSTAINABILITY TRANSITIONS RESEARCH POLICY-RELEVANT: CHALLENGES AT THE SCIENCE-POLICY INTERFACE 0.13 36 18.00
Research Area 6: RA 6: unlabeled (n = 43, density =1.07)
NA NA NA 0.88 NA NA
MARTISKAINEN M 2017 THE ROLE OF COMMUNITY LEADERSHIP IN THE DEVELOPMENT OF GRASSROOTS INNOVATIONS 0.85 105 21.00
LOORBACH D;WITTMAYER J... 2020 TRANSFORMATIVE INNOVATION AND TRANSLOCAL DIFFUSION 0.89 82 41.00
NA NA NA 0.59 NA NA
NA NA NA 0.27 NA NA
EHNERT F;KERN F;BORGST... 2018 URBAN SUSTAINABILITY TRANSITIONS IN A CONTEXT OF MULTI-LEVEL GOVERNANCE: A COMPARISON OF FOUR EUROPEAN STATES 0.85 74 18.50
AHLBORG H 2017 TOWARDS A CONCEPTUALIZATION OF POWER IN ENERGY TRANSITIONS 0.06 68 13.60
INGRAM J 2018 AGRICULTURAL TRANSITION: NICHE AND REGIME KNOWLEDGE SYSTEMS’ BOUNDARY DYNAMICS 0.52 59 14.75
DE VRIES GW;BOON WPC;P... 2016 USER-LED INNOVATION IN CIVIC ENERGY COMMUNITIES 0.66 55 9.17
NA NA NA 0.62 NA NA

6 Knowledge Bases, Research Areas & Topics Interaction

6.1 Joint Overview over Knowledge Bases, Research Areas, and Topics

This plot shows the connection of publications in the research areas to knowledge bases (by citations) and topics (by gamma, document-topic weight)

8 Collaboration

8.1 Collaboration network

9 Endnotes

R version 4.2.1 (2022-06-23)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Ventura 13.1

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] directlabels_2021.1.13 RColorBrewer_1.1-3     topicmodels_0.2-12     patchwork_1.1.2        ggrepel_0.9.1         
 [6] ggforce_0.4.1          plotly_4.10.1          widyr_0.1.5            kableExtra_1.3.4       knitr_1.40            
[11] tidytext_0.3.4         ggraph_2.1.0           tidygraph_1.2.2        bibliometrix_4.1.0     magrittr_2.0.3        
[16] forcats_0.5.2          stringr_1.4.1          dplyr_1.0.10           purrr_0.3.5            readr_2.1.3           
[21] tidyr_1.2.1            tibble_3.1.8           ggplot2_3.4.0          tidyverse_1.3.2       

loaded via a namespace (and not attached):
  [1] readxl_1.4.1           backports_1.4.1        servr_0.25             systemfonts_1.0.4      plyr_1.8.8            
  [6] igraph_1.3.5           lazyeval_0.2.2         crosstalk_1.2.0        SnowballC_0.7.0        digest_0.6.30         
 [11] htmltools_0.5.3        viridis_0.6.2          fansi_1.0.3            tm_0.7-9               googlesheets4_1.0.1   
 [16] cluster_2.1.3          tzdb_0.3.0             openxlsx_4.2.5.1       graphlayouts_0.8.3     modelr_0.1.9          
 [21] vroom_1.6.0            svglite_2.1.0          colorspace_2.0-3       rvest_1.0.3            pubmedR_0.0.3         
 [26] haven_2.5.1            xfun_0.34              crayon_1.5.2           jsonlite_1.8.3         bibliometrixData_0.3.0
 [31] glue_1.6.2             polyclip_1.10-4        gtable_0.3.1           gargle_1.2.1           emmeans_1.8.2         
 [36] webshot_0.5.4          rentrez_1.2.3          scales_1.2.1           mvtnorm_1.1-3          DBI_1.1.3             
 [41] Rcpp_1.0.9             viridisLite_0.4.1      xtable_1.8-4           dimensionsR_0.0.3      flashClust_1.01-2     
 [46] bit_4.0.5              stats4_4.2.1           DT_0.26                htmlwidgets_1.5.4      httr_1.4.4            
 [51] ellipsis_0.3.2         modeltools_0.2-23      factoextra_1.0.7       pkgconfig_2.0.3        XML_3.99-0.12         
 [56] farver_2.1.1           multcompView_0.1-8     sass_0.4.2             dbplyr_2.2.1           utf8_1.2.2            
 [61] reshape2_1.4.4         tidyselect_1.2.0       labeling_0.4.2         rlang_1.0.6            later_1.3.0           
 [66] munsell_0.5.0          cellranger_1.1.0       tools_4.2.1            cachem_1.0.6           cli_3.4.1             
 [71] generics_0.1.3         broom_1.0.1            evaluate_0.17          fastmap_1.1.0          yaml_2.3.6            
 [76] bit64_4.0.5            fs_1.5.2               zip_2.2.2              mime_0.12              slam_0.1-50           
 [81] leaps_3.1              xml2_1.3.3             tokenizers_0.2.3       compiler_4.2.1         rstudioapi_0.14       
 [86] reprex_2.0.2           tweenr_2.0.2           bslib_0.4.0            stringi_1.7.8          highr_0.9             
 [91] lattice_0.20-45        Matrix_1.5-1           vctrs_0.5.1            stringdist_0.9.10      pillar_1.8.1          
 [96] lifecycle_1.0.3        rscopus_0.6.6          jquerylib_0.1.4        estimability_1.4.1     data.table_1.14.4     
[101] httpuv_1.6.6           R6_2.5.1               promises_1.2.0.1       gridExtra_2.3          janeaustenr_1.0.0     
[106] MASS_7.3-57            assertthat_0.2.1       withr_2.5.0            parallel_4.2.1         hms_1.1.2             
[111] quadprog_1.5-8         grid_4.2.1             rmarkdown_2.17         googledrive_2.0.0      NLP_0.2-1             
[116] scatterplot3d_0.3-42   shiny_1.7.3            lubridate_1.8.0        FactoMineR_2.6        

—>

LS0tCnRpdGxlOiAiRUlTVCBNYXBwaW5nIDIwMjI6IEZpZWxkIE1hcHBpbmcgb2YgS25vd2xlZGdlIFN0cnVjdHVyZSIKYXV0aG9yOiAiRGFuaWVsIFMuIEhhaW4iCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogZmxhdGx5CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBwYWdlZAogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICB0b2M6IGZhbHNlCiAgICB0b2NfZGVwdGg6IDMKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiBmYWxzZQpwYXJhbXM6CiAgICBpbnN0aXR1dGU6IAogICAgICAgdmFsdWU6IG51bGwKICAgIGRlcGFydG1lbnQ6CiAgICAgICB2YWx1ZTogbnVsbAotLS0KCjwhLS0tCiMgQWRkIHRvIFlBTUwgd2hlbiBjb21waWxpbmcgaHRtbCAtLTwgd2hlbiByZXZpZXdpbmcgY2hhbmdlIGZpcnN0IGxpbmUgdG86IGh0bWxfbm90ZWJvb2sKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6IGZsYXRseQogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBkZl9wcmludDogcGFnZWQKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgdG9jOiBmYWxzZQogICAgdG9jX2RlcHRoOiAzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogZmFsc2UKCiMgQWRkIHdoZW4gY29tcGlsaW5nIHBkZgojIEFkZCB0byBZQU1MIHdoZW4gY29tcGlsaW5nIGh0bWwKICAgYm9va2Rvd246OnBkZl9kb2N1bWVudDI6IAogICAgZmlnX2NhcHRpb246IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgZ2xvYmFsX251bWJlcmluZzogdHJ1ZQotLS0+CgoKYGBgez1odG1sfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoubWFpbi1jb250YWluZXIgewogIG1heC13aWR0aDogMTIwMHB4OwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQo8L3N0eWxlPgpgYGAKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQojIyMgR2VuZXJpYyBwcmVhbWJsZQojcm0obGlzdD1scygpKQpTeXMuc2V0ZW52KExBTkcgPSAiZW4iKQpvcHRpb25zKHNjaXBlbiA9IDUpCnNldC5zZWVkKDEzMzcpCgojIyMgTG9hZCBwYWNrYWdlcyAgCiMgZ2VuZXJhbApsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShtYWdyaXR0cikKbGlicmFyeSh3aWR5cikKCiMgS2libGlvICYgTlcKbGlicmFyeShiaWJsaW9tZXRyaXgpCmxpYnJhcnkodGlkeWdyYXBoKQpsaWJyYXJ5KGdncmFwaCkKCiMgTkxQCmxpYnJhcnkodGlkeXRleHQpCgojIERhdGF2aXoKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoZ2dmb3JjZSkKbGlicmFyeShnZ3JlcGVsKQpsaWJyYXJ5KHBhdGNod29yaykKCiMgS25pdApsaWJyYXJ5KGtuaXRyKSAjIEZvciBkaXNwbGF5IG9mIHRoZSBtYXJrZG93bgpsaWJyYXJ5KGthYmxlRXh0cmEpICMgRm9yIHRhYmxlIHN0eWxpbmcKCiMgb3duIGZ1bmN0aW9ucwpzb3VyY2UoIi4uL2Z1bmN0aW9ucy9mdW5jdGlvbnNfYmFzaWMuUiIpCnNvdXJjZSgiLi4vZnVuY3Rpb25zL2Z1bmN0aW9uc19zdW1tYXJ5LlIiKQpzb3VyY2UoIi4uL2Z1bmN0aW9ucy8wMF9wYXJhbWV0ZXJzLlIiKQoKIyBLbml0ciBvcHRpb25zCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSkKYGBgCgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVYVCBQQVJUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyBXaGVuIGRvaW5nIGl0IGhlcmUgaW4gdGhlIG5vdGVib29rCnZhcl9pbnN0IDwtICdFSVNUJwp2YXJfZGVwdCA8LSAndjInCgojIFdoZW4gY2FsbGluZyBmcm9tIGEgaGlnaGVydCBsZXZlbCBzY3JpcHQKI3Zhcl9pbnN0IDwtIHBhcmFtcyRpbnN0aXR1dGUKI3Zhcl9kZXB0IDwtIHBhcmFtcyRkZXBhcnRtZW50CmBgYAoKIyBJbnRyb2R1Y3Rpb246IE1hcHBpbmcgb2YgYnJvYWQgcmVzZWFyY2ggZmllbGQgYXJvdW5kIGByIHZhcl9pbnN0YCBpbiBgciB2YXJfZGVwdGAKCkhlcmUgYXJlIHByZWxpbWluYXJ5IHJlc3VsdHMgb2YgdGhlIGJpYmxpb21ldHJpYyBtYXBwaW5nIG9mIEVJU1QuIEl0cyBwdXJwb3NlIGlzOgoKKiBUbyBtYXAgdGhlIGJyb2FkZXIgcmVzZWFyY2ggY29tbXVuaXR5IGFuZCBkaXN0aW5jdCByZXNlYXJjaCBmaWVsZCB0aGUgZGVwYXJ0bWVudCBjb250cmlidXRlcyB0by4KKiBJZGVudGlmeSBjb3JlIGtub3dsZWRnZSBiYXNlcywgcmVzZWFyY2ggYXJlYXMgZ3RyZW5kcyBhbmQgdG9waWNzLgoqIEhpZ2hsaWdodCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIGRlcGFydG1lbnQgd2l0aGluIHRoaXMgZHluYW1pY3MuCgpUaGUgbWV0aG9kIGZvciB0aGUgcmVzZWFyY2gtZmllbGQtbWFwcGluZyBjYW4gYmUgcmV2aWV3ZWQgaGVyZToKCltSYWthcywgTS4sICYgSGFpbiwgRC4gUy4gKDIwMTkpLiBUaGUgc3RhdGUgb2YgaW5ub3ZhdGlvbiBzeXN0ZW0gcmVzZWFyY2g6IFdoYXQgaGFwcGVucyBiZW5lYXRoIHRoZSBzdXJmYWNlPy4gUmVzZWFyY2ggUG9saWN5LCA0OCg5KSwgMTAzNzg3Ll0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5yZXNwb2wuMjAxOS4wNC4wMTEpCgoqKk5vdGU6KiogVGhlIGFuYWx5c2lzIGluIHRoaXMgZG9jdW1lbnQgZGVwaWN0cyB0aGUgKmxhcmdlciByZXNlYXJjaCBmaWVsZCogYXJvdW5kIHRoZSBkZXBhcnRtZW50LCB0aGVyZWJ5IGFsbCBhbmFseXNpcyByZXN1bHRzIGFyZSBiYXNlZCBvbiB0aGUgcHVibGljYXRpb25zIG9mIHRoZSBkZXBhcnRtZW50IHBsdXMgcmVsYXRlZCAKCgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVYVCBQQVJUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyBMb2FkIGRhdGEKTSA8LSByZWFkUkRTKHBhc3RlMCgnLi4vLi4vdGVtcC9NXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgJT4lIGFzX3RpYmJsZSgpICU+JSAKICBkaXN0aW5jdChVVCwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGZpbHRlcihQWSA+PSBQWV9taW4sIFBZIDw9IFBZX21heCkgJT4lCiAgZ3JvdXBfYnkoUFkpICU+JQogICAgbXV0YXRlKFRDX2NvaG9ydF9yYW5rID0gcGVyY2VudF9yYW5rKFRDKSkgJT4lCiAgdW5ncm91cCgpIApgYGAKCmBgYHtyfQpjb21fbGFiZWxzIDwtIHJlYWRfY3N2MignLi4vZGF0YS9jb21tdW5pdHlfbGFiZWxpbmcuY3N2JykgICU+JSBmaWx0ZXIoaW5zdGl0dXRlID09IHZhcl9pbnN0LCBkZXBhcnRtZW50ID09IHZhcl9kZXB0KSAlPiUgYXJyYW5nZShpbnN0aXR1dGUsIGRlcGFydG1lbnQsIHR5cGUsIGNvbSkgJT4lIG11dGF0ZShsYWJlbCA9IGlmZWxzZShpcy5uYShsYWJlbCksIHBhc3RlMCh0eXBlLCAnICcsIGNvbSwgJzogdW5sYWJlbGVkJyksIHBhc3RlMCh0eXBlLCAnICcsIGNvbSwgJzogJywgbGFiZWwpKSkKYGBgCgoKIyBHZW5lcmFsIE92ZXJ2aWV3IG92ZXIgdGhlIHJlc2VhcmNoIGZpZWxkCgoqKk5vdGU6KiogVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGJhc2ljIGRlc2NyaXB0aXZlcyBvZiB0aCBpZGVudGlmaWVkIHJlc2VhcmNoIGZpZWxsZCwgaW5jbHVkaW5nIG51bWJlciBvZiBhcnRpY2xlcyBvdmVyIHRpbWUsIGNvdW50cmllcywgaW5zdGl0dXRpb25zLCBhbmQgYXV0aG9ycy4gU2VlIGBUZWNobmljYWwgZGVzY3JpcHRpb25gZm9yIGFkZGl0aW9uYWwgZXhwbGFuYXRpb25zLgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CiMgcmVzdWx0cyA8LSBiaWJsaW9BbmFseXNpcyhNLCBzZXAgPSAiOyIpCnJlc3VsdHMgPC0gcmVhZF9yZHMocGFzdGUwKCcuLi8uLi90ZW1wL01fcmVzXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgojIyBNYWluIEluZGljYXRvcnM6IFB1YmxpY2F0aW9ucywgQXV0aG9ycywgQ291bnRyaWVzIAoKYGBge3J9CiNyZXN1bHRzICU+JSBwbG90KGsgPSAxMCwgcGF1c2UgPSBGQUxTRSkKYGBgCgpgYGB7cn0KcHJvZF9BVSA8LSBNICU+JSBhdXRob3JQcm9kT3ZlclRpbWUoayA9IDEwLCBncmFwaCA9IFRSVUUpCiNwbG90KHByb2RfQVUkZ3JhcGgpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CnJtKHJlc3VsdHMsIHByb2RfQVUpCmBgYAoKIyMgQ29ubmVjdGlvbiBiZXR3ZWVuIHRoZSByZXNlYXJjaCBmaWVsZCdzIFRvcCBBdXRob3JzLUtleXdvcmRzLUpvdXJuYWxzCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KTV90aHJlZWZpZWxkIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RocmVlZmllbGRfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTE3LjUsIGZpZy5oZWlnaHQ9MTcuNX0KTV90aHJlZWZpZWxkCmBgYAoKIyBUb3BpYyBtb2RlbGxpbmcgCgoqKk5vdGU6KiogSGVyZSwgd2UgcmVwb3J0IHRoZSByZXN1bHRzIG9mIGEgTERBIHRvcGljLW1vZGVsbGluZyAoYmFzaWNhbGx5LCBjbHVzdGVyaW5nIG9uIHdvcmRzKSBvbiBhbGwgdGl0bGUrYWJzdHJhY3QgdGV4dHMuIElkZW50aWZpZWQgdG9waWNzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBicm9hZCB0aGVtZXMgaW4gdGhlIHJlc2VhcmNoIGZpZWxkLiBTZWUgYFRlY2huaWNhbCBkZXNjcmlwdGlvbmBmb3IgYWRkaXRpb25hbCBleHBsYW5hdGlvbnMuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KdGV4dF90aWR5IDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RleHRfdGlkeV8nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICcucmRzJykpCnRleHRfbGRhIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RleHRfTERBXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgCgp0ZXh0X2xkYV9iZXRhIDwtIHRleHRfbGRhICU+JSB0aWR5KG1hdHJpeCA9ICJiZXRhIikgCnRleHRfbGRhX2dhbW1hIDwtIHRleHRfbGRhICU+JSB0aWR5KG1hdHJpeCA9ICJnYW1tYSIpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc190b3AgPC0gdGliYmxlKCAKICBjb20gPSAxOih0ZXh0X2xkYV9nYW1tYSAlPiUgcHVsbCh0b3BpYykgJT4lIG5fZGlzdGluY3QoKSksCiAgdHlwZSA9ICdUUCcsCiAgY29sID0gY29tICU+JSBnZ19jb2xvcl9zZWxlY3QocGFsID0gcGFsX3RwKSkgJT4lCiAgbGVmdF9qb2luKGNvbV9sYWJlbHMgJT4lIGZpbHRlcih0eXBlID09ICdUUCcpICU+JSBzZWxlY3QoY29tLCBsYWJlbCksIGJ5ID0gJ2NvbScpICU+JQogIG11dGF0ZShsYWJlbCA9IGlmZWxzZShpcy5uYShsYWJlbCksIHBhc3RlMCgnVFAgJywgY29tLCAnOiB1bmxhYmVsZWQnKSwgbGFiZWwpKQogICAgICAgICAgICAKIyAjIDFzdCBhbHRlcm5hdGl2ZTogTnVtYmVyIHRoZW0gMS1uCiMgcGFzdGUodHlwZSwgMToodGV4dF9sZGFfZ2FtbWEgJT4lIHB1bGwodG9waWMpICU+JSBuX2Rpc3RpbmN0KCkpKSAgICAgICAgICAgCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CnRleHRfbGRhX2JldGEgJTw+JSAgaW5uZXJfam9pbihjb21fbmFtZXNfdG9wICU+JSBzZWxlY3QoY29tLCBsYWJlbCwgY29sKSwgYnkgPSBjKCd0b3BpYycgPSAnY29tJykpCnRleHRfbGRhX2dhbW1hICU8PiUgaW5uZXJfam9pbihjb21fbmFtZXNfdG9wICU+JSBzZWxlY3QoY29tLCBsYWJlbCwgY29sKSwgYnkgPSBjKCd0b3BpYycgPSAnY29tJykpCmBgYAoKCiMjIFRvcGljcyBieSB0b3B3b3JkcwoKYGBge3IsIGZpZy53aWR0aD0xNSwgZmlnLmhlaWdodD0xNX0gCnRleHRfbGRhX2JldGEgJT4lCiAgZ3JvdXBfYnkobGFiZWwpICU+JQogIHNsaWNlX21heChiZXRhLCBuID0gMTApICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUodGVybSA9IHJlb3JkZXJfd2l0aGluKHRlcm0sIGJldGEsIGxhYmVsKSkgJT4lCiAgZ2dwbG90KGFlcyh0ZXJtLCBiZXRhLCBmaWxsID0gZmFjdG9yKGxhYmVsKSkpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgZmFjZXRfd3JhcCh+IGxhYmVsLCBzY2FsZXMgPSAiZnJlZSIsIG5jb2wgPSAzKSArCiAgY29vcmRfZmxpcCgpICsKICBzY2FsZV94X3Jlb3JkZXJlZCgpICsKICBsYWJzKHggPSAiSW50cmEtdG9waWMgZGlzdHJpYnV0aW9uIG9mIHdvcmQiLAogICAgICAgeSA9ICJXb3JkcyBpbiB0b3BpYyIpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwobmFtZSA9ICJMZWdlbmQiLCB2YWx1ZXMgPSBjb21fbmFtZXNfdG9wICU+JSBwdWxsKGNvbCkpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykKCiNwbG90X2x5IDwtIHBsb3QgJT4lIHBsb3RseTo6Z2dwbG90bHkoKQojaHRtbHdpZGdldHM6OnNhdmVXaWRnZXQocGxvdGx5Ojphc193aWRnZXQocGxvdF9seSksICcuLi9vdXRwdXRcdmlzX3Bsb3RseV90b3BpY190ZXJtcy5odG1sJywgc2VsZmNvbnRhaW5lZCA9IFRSVUUpCmBgYAoKKipOb3RlOioqIFdoaWxlIHRoaXMgc3RhdGljIHZpZXMgaXMgaGVscGZ1bCwgSSByZWNvbW1lbmQgdXNpbmcgdGhlIGludGVyYWN0aXZlIExEQVZpcyB2ZXJzaW9uIHRvIGJlIGZvdW5kIHVuZGVyIGByIHBhc3RlMCgnaHR0cHM6Ly9kYW5pZWwtaGFpbi5naXRodWIuaW8vYmlibGlvX2x1eF8yMDIyL291dHB1dC90b3BpY19tb2RlbGxpbmcvTERBdml6XycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy9pbmRleC5odG1sI3RvcGljPTEmbGFtYmRhPTAuNjAmdGVybT0nKWAuIEZvciBmdW5jdGlvbmFsaXR5IGFuZCB1c2FnZSwgc2VlIMK0VGVjaG5pY2FsIMK0LgoKYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTcuNX0KdGV4dF9sZGFfZ2FtbWEgJT4lCiAgcmVuYW1lKHdlaWdodCA9IGdhbW1hKSAlPiUKICBsZWZ0X2pvaW4oTSAlPiUgc2VsZWN0KFhYLCBQWSksIGJ5ID0gYygnZG9jdW1lbnQnID0gJ1hYJykpICU+JQogIG11dGF0ZShQWSA9IGFzLm51bWVyaWMoUFkpKSAlPiUKICBncm91cF9ieShQWSwgbGFiZWwpICU+JSBzdW1tYXJpc2Uod2VpZ2h0ID0gc3VtKHdlaWdodCkpICU+JSB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoUFkpICU+JSBtdXRhdGUod2VpZ2h0X1BZID0gc3VtKHdlaWdodCkpICU+JSB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKHdlaWdodF9yZWwgPSB3ZWlnaHQgLyB3ZWlnaHRfUFkpICU+JQogIHNlbGVjdChQWSwgbGFiZWwsIHdlaWdodCwgd2VpZ2h0X3JlbCkgJT4lCiAgZmlsdGVyKFBZID49IFBZX21pbiAmIFBZIDw9IFBZX21heCkgJT4lCiAgYXJyYW5nZShQWSwgbGFiZWwpICU+JQogIHBsb3Rfc3VtbWFyeV90aW1lbGluZSh5MSA9IHdlaWdodCwgeTIgPSB3ZWlnaHRfcmVsLCB0ID0gUFksIHRfbWluID0gUFlfbWluLCB0X21heCA9IFBZX21heCwgYnkgPSBsYWJlbCwgIGxhYmVsID0gVFJVRSwgcGFsID0gcGFsX3RwLCAKICAgICAgICAgICAgICAgICAgICAgICAgeTFfdGV4dCA9ICJUb3BpYyBwb3B1bGFyaXR5IGFubnVhbHkiLCB5Ml90ZXh0ID0gIlNoYXJlIG9mIHRvcGljIGFubnVhbGx5IikgKwogIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9IHBhc3RlKCdUb3BpYyBNb2RlbGxpbmc6JywgdmFyX2luc3QsICdGaWVsZCBhcm91bmQgRGVwdC4nLCB2YXJfZGVwdCwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBwYXN0ZSgnVGltZWZyYW1lOicsIFBZX21pbiwgJy0nLCBQWV9tYXggLCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBjYXB0aW9uID0gJ0Fic29sdXRlIHRvcGljIGFwcGVhcmFuY2UgKGxlZnQpLCBSZWxhdGl2ZSB0b3BpYyBhcHBlYXJhbmNlIChyaWdodCknKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD03LjV9CnRleHRfbGRhX2dhbW1hICU+JQogIHJlbmFtZSh3ZWlnaHQgPSBnYW1tYSkgJT4lCiAgaW5uZXJfam9pbihNICU+JSBzZWxlY3QoWFgsIFBZLCBUQ19jb2hvcnRfcmFuaykgJT4lCiAgICAgICAgICAgICAgZmlsdGVyKGludF9kZXB0ID0gVFJVRSksIGJ5ID0gYygnZG9jdW1lbnQnID0gJ1hYJykpICU+JQogICMgbXV0YXRlKGltcGFjdCA9IHdlaWdodCogVENfY29ob3J0X3JhbmspICU+JQogIG11dGF0ZShpbXBhY3QgPSBUQ19jb2hvcnRfcmFuayA+PSAwLjkpICU+JQogIGdyb3VwX2J5KFBZKSAlPiUKICBmaWx0ZXIocGVyY2VudF9yYW5rKHdlaWdodCkgPj0gMC41KSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkobGFiZWwsIFBZKSAlPiUKICBzdW1tYXJpc2UoaW1wYWN0ID0gbWVhbihpbXBhY3QpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBQWSwgeSA9IGltcGFjdCwgY29sID0gbGFiZWwpKSArCiAgZ2VvbV9saW5lKCkgKyAKICBnZW9tX3BvaW50KCkgKyAKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgnVG9waWMgSW1wYWN0OicsIHZhcl9pbnN0LCAnRmllbGQgYXJvdW5kIERlcHQuJywgdmFyX2RlcHQsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgeCA9ICdZZWFyJywKICAgICAgICAgICAgICAgICAgeSA9ICdUb3BpYyBJbXBhY3QnLAogICAgICAgICAgICAgICAgICBjYXB0aW9uID0gJ1RvcGljIEltcGFjdCByZWZlcnMgdG8gdGhlIHNoYXJlIG9mIHB1YmxpY2F0aW9ucyB3aXRoaW4gdGhlIGNvaG9ydCB0b3AtMTAlIGNpdGVkIHB1YmxpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHRvcGljJywKICAgICAgICAgICAgICAgICAgKQpgYGAKCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBORVhUIFBBUlQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0Kcm0odGV4dF90aWR5LCB0ZXh0X2xkYSkKYGBgCgojIEtub3dsZWRnZSBCYXNlczogQ28tQ2l0YXRpb24gbmV0d29yayBhbmFseXNpcyAKCioqTm90ZToqKiBUaGlzIGFuYWx5c2lzIHJlZmVycyB0aGUgY28tY2l0YXRpb24gYW5hbHlzaXMsIHdoZXJlIHRoZSBjaXRlZCByZWZlcmVuY2VzIGFuZCBub3QgdGhlIG9yaWdpbmFsIHB1YmxpY2F0aW9ucyBhcmUgdGhlIHVuaXQgb2YgYW5hbHlzaXMuIElkZW50aWZpZWQga25vd2xlZGdlIGJhc2VzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyB0aGUga25vd2xlZGdlIGZvdW5kYXRpb24gdGhlIGZpZWxkIGRyYXdzIGZyb20uIFNlZSBgVGVjaG5pY2FsIGRlc2NyaXB0aW9uYGZvciBhZGRpdGlvbmFsIGV4cGxhbmF0aW9ucy4KCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpDX253IDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL0NfbndfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAgJT4lCiAgZHJvcF9uYShjb20pCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc19jaXQgPC0gdGliYmxlKCAKICBjb20gPSAxOihDX253ICU+JSBwdWxsKGNvbSkgJT4lIG5fZGlzdGluY3QoKSksCiAgdHlwZSA9ICdLQicsCiAgY29sID0gY29tICU+JSBnZ19jb2xvcl9zZWxlY3QocGFsID0gcGFsX2tiKSkgJT4lCiAgbGVmdF9qb2luKGNvbV9sYWJlbHMgJT4lIGZpbHRlcih0eXBlID09ICdLQicpICU+JSBzZWxlY3QoY29tLCBsYWJlbCksIGJ5ID0gJ2NvbScpICU+JQogIG11dGF0ZShsYWJlbCA9IGlmZWxzZShpcy5uYShsYWJlbCksIHBhc3RlMCgnS0IgJywgY29tLCAnOiB1bmxhYmVsZWQnKSwgbGFiZWwpKQoKIyAjIDFzdCBhbHRlcm5hdGl2ZTogTnVtYmVyIHRoZW0gMS1uCiMgcGFzdGUodHlwZSwgMTooQ19udyAlPiUgcHVsbChjb20pICU+JSBuX2Rpc3RpbmN0KCkpKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpDX253ICU8PiUgbGVmdF9qb2luKGNvbV9uYW1lc19jaXQgJT4lIHNlbGVjdChjb20sIGxhYmVsLCBjb2wpLCBieSA9ICJjb20iKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQprYl9zdGF0cyA8LSBDX253ICU+JQogIGdyb3VwX2J5KGxhYmVsKSAlPiUKICBzdW1tYXJpc2UobiA9IG4oKSwgZGVuc2l0eV9pbnQgPSAoKHN1bShkZ3JfaW50KSAvIChuKCkgKiAobigpIC0gMSkpKSAqIDEwMCkgJT4lIHJvdW5kKDMpKSAlPiUKICByZWxvY2F0ZShsYWJlbCwgZXZlcnl0aGluZygpKQpgYGAKCmBgYHtyfQprYl9zdW0gPC1DX253ICU+JSBncm91cF9ieShjb20pICU+JSAKICBhcnJhbmdlKGNvbSwgZGVzYyhkZ3JfaW50KSkgJT4lCiAgbXV0YXRlKG5hbWUgPSBuYW1lICU+JSBzdHJfdHJ1bmMoMTUwKSkgJT4lCiAgc2xpY2VfbWF4KG9yZGVyX2J5ID0gZGdyX2ludCwgbiA9IDEwLCB3aXRoX3RpZXMgPSBGQUxTRSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoIG5hbWUsIGRncl9pbnQsIGRncikgJT4lCiAga2FibGUoKSAKCmZvcihpIGluIDE6bnJvdyhjb21fbmFtZXNfY2l0KSl7CiAga2Jfc3VtIDwtIGtiX3N1bSAlPiUKICAgIHBhY2tfcm93cyhwYXN0ZTAoJ0tub3dsZWRnZSBCYXNlICcsIGksICc6ICcsIGNvbV9uYW1lc19jaXRbaSwgJ2xhYmVsJ10sCiAgICAgICAgICAgICAgICAgICAgICcgICAobiA9ICcsIGtiX3N0YXRzW2ksICduJ10sICcsIGRlbnNpdHkgPScsIGtiX3N0YXRzW2ksICdkZW5zaXR5X2ludCddICU+JSByb3VuZCgyKSwgJyknICksIAogICAgICAgICAgICAgIChpKjEwLTkpLCAgKGkqMTApLCBsYWJlbF9yb3dfY3NzID0gImJhY2tncm91bmQtY29sb3I6ICM2NjY7IGNvbG9yOiAjZmZmOyIpIAogIH0KCmtiX3N1bSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLCBmb250X3NpemUgPSAxMCkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KZWxfMm0gPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvZWxfMm1fJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlPiUKICBkcm9wX25hKCkKYGBgCgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNpdF9jb21feWVhciA8LSBlbF8ybSAlPiUKICBjb3VudChjb21fY2l0LCBQWSwgbmFtZSA9ICdUQycpICU+JQogIGdyb3VwX2J5KFBZKSAlPiUKICBtdXRhdGUoVENfcmVsID0gVEMgLyBzdW0oVEMpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgYXJyYW5nZShQWSwgY29tX2NpdCkgJT4lCiAgbGVmdF9qb2luKGNvbV9uYW1lc19jaXQgLCBieSA9IGMoJ2NvbV9jaXQnID0gJ2NvbScpKSAlPiUgCiAgY29tcGxldGUobGFiZWwsIFBZLCBmaWxsID0gbGlzdChUQyA9IDAsIFRDX3JlbCA9IDApKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD03LjV9CmNpdF9jb21feWVhciAlPiUKICBwbG90X3N1bW1hcnlfdGltZWxpbmUoeTEgPSBUQywgeTIgPSBUQ19yZWwsIHQgPSBQWSwgdF9taW4gPSBQWV9taW4sIHRfbWF4ID0gUFlfbWF4LCBieSA9IGxhYmVsLCBwYWwgPSBwYWxfa2IsIGxhYmVsID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgeTFfdGV4dCA9ICJOdW1iZXIgY2l0YXRpb25zIHJlY2lldmVkIGFubnVhbGx5IiwgIHkyX3RleHQgPSAiU2hhcmUgb2YgY2l0YXRpb25zIHJlY2lldmVkIGFubnVhbGx5IikgKwogIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9IHBhc3RlKCdLbm93bGVkZ2UgQnNlczonLCB2YXJfaW5zdCwgJ0ZpZWxkIGFyb3VuZCBEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IHBhc3RlKCdUaW1lZnJhbWU6JywgUFlfbWluLCAnLScsIFBZX21heCAsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIGNhcHRpb24gPSAnQWJzb2x1dGUga25vd2xlZGdlIGJhc2UgYXBwZWFyYW5jZSAobGVmdCksIFJlbGF0aXZlIGtub3dsZWRnZSBiYXNlIGFwcGVhcmFuY2UgKHJpZ2h0KScpCmBgYAoKPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE5FWFQgUEFSVCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgoKIyBSZXNlYXJjaCBBcmVhczogQmlibGlvZ3JhcGhpYyBjb3VwbGluZyBhbmFseXNpcwoKKipOb3RlOioqIFRoaXMgYW5hbHlzaXMgcmVmZXJzIHRoZSBiaWJsaW9ncmFwaGljIGNvdXBsaW5nIGFuYWx5c2lzLCB3aGVyZSBvcmlnaW5hbCBwdWJsaWNhdGlvbnMgYXJlIHRoZSB1bml0IG9mIGFuYWx5c2lzLiBJZGVudGlmaWVkIHJlc2VhcmNoIGFyZWFzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyB0aGUgZmllbGQncyBjdXJyZW50IHJlc2VhcmNoIGZyb250aWVyLiBTZWUgYFRlY2huaWNhbCBkZXNjcmlwdGlvbmBmb3IgYWRkaXRpb25hbCBleHBsYW5hdGlvbnMuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KTV9iaWIgPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvTV9iaWJfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlPiUgCiAgYXNfdGliYmxlKCkgJT4lCiAgZHJvcF9uYShjb20pCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc19iaWIgPC0gdGliYmxlKCAKICBjb20gPSAxOihNX2JpYiAlPiUgcHVsbChjb20pICU+JSBuX2Rpc3RpbmN0KCkpLAogIHR5cGUgPSAnUkEnLAogIGNvbCA9IGNvbSAlPiUgZ2dfY29sb3Jfc2VsZWN0KHBhbCA9IHBhbF9yYSkpICU+JQogIGxlZnRfam9pbihjb21fbGFiZWxzICU+JSBmaWx0ZXIodHlwZSA9PSAnUkEnKSAlPiUgc2VsZWN0KGNvbSwgbGFiZWwpLCBieSA9ICdjb20nKSAlPiUKICBtdXRhdGUobGFiZWwgPSBpZmVsc2UoaXMubmEobGFiZWwpLCBwYXN0ZTAoJ1JBICcsIGNvbSwgJzogdW5sYWJlbGVkJyksIGxhYmVsKSkKCiMgIyAxc3QgYWx0ZXJuYXRpdmU6IE51bWJlciB0aGVtIDEtbgojIHBhc3RlKHR5cGUsIDE6KE1fYmliICU+JSBwdWxsKGNvbSkgJT4lIG5fZGlzdGluY3QoKSkpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9Ck1fYmliICU8PiUgbGVmdF9qb2luKGNvbV9uYW1lc19iaWIgJT4lIHNlbGVjdChjb20sIGxhYmVsLCBjb2wpLCBieSA9ICJjb20iKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpyYV9zdGF0cyA8LSBNX2JpYiAlPiUKICBkcm9wX25hKGNvbSkgJT4lCiAgZ3JvdXBfYnkoY29tLCBsYWJlbCkgJT4lCiAgc3VtbWFyaXNlKG4gPSBuKCksIGRlbnNpdHlfaW50ID0gKChzdW0oZGdyX2ludCkgLyAobigpICogKG4oKSAtIDEpKSkgKiAxMDApICU+JSByb3VuZCgzKSkgJT4lCiAgc2VsZWN0KGNvbSwgbGFiZWwsIGV2ZXJ5dGhpbmcoKSkKYGBgCgpgYGB7cn0KcmFfc3VtIDwtIE1fYmliICU+JSBncm91cF9ieShsYWJlbCkgJT4lIAogIGxlZnRfam9pbihNICU+JSBzZWxlY3QoWFgsIEFVLCBQWSwgVEksIFRDKSwgYnkgPSAnWFgnKSAlPiUKICBtdXRhdGUoZGdyX3NlbGVjdCA9IChkZ3JfaW50IC8gbWF4KGRncl9pbnQpICogKFRDIC8gbWF4KFRDKSkpICkgJT4lCiAgc2xpY2VfbWF4KG9yZGVyX2J5ID0gZGdyX3NlbGVjdCwgbiA9IDEwLCB3aXRoX3RpZXMgPSBGQUxTRSkgJT4lIAogIG11dGF0ZShUQ195ZWFyID0gKFRDIC8gKDIwMjEgKyAxIC0gUFkpKSAlPiUgcm91bmQoMiksCiAgICAgICAgIGRncl9pbnQgPSBkZ3JfaW50ICU+JSByb3VuZCgyKSwKICAgICAgICAgQVUgPSBBVSAlPiUgc3RyX3RydW5jKDI1KSwKICAgICAgICAgVEkgPSBUSSAlPiUgc3RyX3RydW5jKDEyNSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoQVUsIFBZLCBUSSwgZGdyX2ludCwgVEMsIFRDX3llYXIpICU+JQogIGthYmxlKCkKCgpmb3IoaSBpbiAxOm5yb3coY29tX25hbWVzX2JpYikpewogIHJhX3N1bSAgJTw+JQogICAgcGFja19yb3dzKHBhc3RlMCgnUmVzZWFyY2ggQXJlYSAnLCBpLCAnOiAnLCBjb21fbmFtZXNfYmliW2ksICdsYWJlbCddLAogICAgICAgICAgICAgICAgICAgICAnICAgKG4gPSAnLCByYV9zdGF0c1tpLCAnbiddLCAnLCBkZW5zaXR5ID0nLCByYV9zdGF0c1tpLCAnZGVuc2l0eV9pbnQnXSAlPiUgcm91bmQoMiksICcpJyApLCAKICAgICAgICAgICAgICAoaSoxMC05KSwgIChpKjEwKSwgbGFiZWxfcm93X2NzcyA9ICJiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2OyBjb2xvcjogI2ZmZjsiKSAKICB9CgpyYV9zdW0gJT4lIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksIGZvbnRfc2l6ZSA9IDEwKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD03LjV9Ck1fYmliICU+JQogIGxlZnRfam9pbihNICU+JSBzZWxlY3QoWFgsIFBZKSwgYnkgPSAnWFgnKSAlPiUKICBtdXRhdGUoUFkgPSBQWSAlPiUgYXMubnVtZXJpYygpKSAlPiUKICBncm91cF9ieShsYWJlbCwgUFkpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShQWSkgJT4lIG11dGF0ZShuX1BZID0gc3VtKG4pKSAlPiUgdW5ncm91cCgpICU+JQogIG11dGF0ZShuX3JlbCA9IG4gLyBuX1BZKSAlPiUKICBzZWxlY3QobGFiZWwsIFBZLCBuLCBuX3JlbCkgJT4lCiAgYXJyYW5nZShsYWJlbCwgUFkpICU+JSAKICBjb21wbGV0ZShsYWJlbCwgUFksIGZpbGwgPSBsaXN0KG4gPSAwLCBuX3JlbCA9IDApKSAlPiUKICBwbG90X3N1bW1hcnlfdGltZWxpbmUoeTEgPSBuLCB5MiA9IG5fcmVsLCB0ID0gUFksIHRfbWluID0gUFlfbWluLCB0X21heCA9IFBZX21heCwgYnkgPSBsYWJlbCwgbGFiZWwgPSBUUlVFLCBwYWwgPSBwYWxfcmEsCiAgICAgICAgICAgICAgICAgICAgICAgIHkxX3RleHQgPSAiTnVtYmVyIHB1YmxpY2F0aW9ucyBhbm51YWxseSIsIHkyX3RleHQgPSAiU2hhcmUgb2YgcHVibGljYXRpb25zIGFubnVhbGx5IikgKwogIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9IHBhc3RlKCdSZXNlYXJjaCBBcmVhczonLCB2YXJfaW5zdCwgJ0ZpZWxkIGFyb3VuZCBEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IHBhc3RlKCdUaW1lZnJhbWU6JywgUFlfbWluLCAnLScsIFBZX21heCAsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIGNhcHRpb24gPSAnQWJzb2x1dGUgcmVzZWFyY2ggYXJlYSBhcHBlYXJhbmNlIChsZWZ0KSwgUmVsYXRpdmUgcmVzZWFyY2ggYXJlYSBhcHBlYXJhbmNlIChyaWdodCknKQpgYGAKCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KZ19hZ2cgPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvZ19iaWJfYWdnXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgJU4+JQogIGFycmFuZ2UoY29tKSAjICU+JQojICAgbXV0YXRlKG5hbWUgPSBuYW1lc19yYSAlPiUgcHVsbChjb21fcmFfbmFtZSksCiMgICAgICAgICAgY29sb3IgPSBjb2xzX3JhKQpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PSA3LjUsIGZpZy53aWR0aD03LjV9CmdfYWdnICVFPiUgCiAgZmlsdGVyKHdlaWdodCA+IDAgJiBmcm9tICE9IHRvKSAlPiUKICBmaWx0ZXIod2VpZ2h0ID49IHF1YW50aWxlKHdlaWdodCwgMC4yNSkgKSAgJU4+JQogIG11dGF0ZShjb20gPSBjb21fbmFtZXNfYmliICU+JSBwdWxsKGxhYmVsKSkgJT4lCiAgZ2dyYXBoKGxheW91dCA9ICJjaXJjbGUiKSArIAogIGdlb21fZWRnZV9mYW4oc3RyZW5naHQgPSAwLjgsIGFlcyh3aWR0aCA9IHdlaWdodCksIGFscGhhID0gMC4yKSAgKyAKICBnZW9tX25vZGVfcG9pbnQoYWVzKHNpemUgPSBOLCBjb2xvciA9IGNvbSkpICArIAogIGdlb21fbm9kZV90ZXh0KGFlcyhsYWJlbCA9IGNvbSksIHJlcGVsID0gVFJVRSkgKwogICN0aGVtZV9ncmFwaChiYXNlX2ZhbWlseSA9ICJBcmlhbCIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKwogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsMjApKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSBwYWxfcmEpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoJ1Jlc2VhcmNoIEFyZWEgQ29ubmVjdGl2aXR5OicsIHZhcl9pbnN0LCAnRmllbGQgYXJvdW5kIERlcHQuJywgdmFyX2RlcHQsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgY2FwdGlvbiA9ICdOb2RlcyA9IElkZW50aWZpZWQgUmVzZWFyY2ggQXJlYXM7IEVkZ2VzOiBCaWJsaW9ncmFwaGljIGNvdXBsaW5nIHN0cmVuZ2h0IChKYWNjYXJkIHdlaWdodGVkKScpCmBgYAoKCiMgS25vd2xlZGdlIEJhc2VzLCBSZXNlYXJjaCBBcmVhcyAmIFRvcGljcyBJbnRlcmFjdGlvbgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CiMgTm9kZXMKbmxfM20gPC0gY29tX25hbWVzX2JpYiAlPiUKICBiaW5kX3Jvd3MoY29tX25hbWVzX2NpdCkgJT4lCiAgYmluZF9yb3dzKGNvbV9uYW1lc190b3ApICU+JQogIHJlbmFtZShuYW1lID0gbGFiZWwsCiAgICAgICAgIGNvbV9uciA9IGNvbSkgJT4lCiAgcmVsb2NhdGUobmFtZSkKCiMgRWRnZXMKZWxfMm1fa2IgPC0gZWxfMm0gJT4lCiAgc2VsZWN0KC1mcm9tLCAtdG8pICU+JQogIGlubmVyX2pvaW4oY29tX25hbWVzX2NpdCAlPiUgc2VsZWN0KGNvbSwgbGFiZWwpLCBieSA9IGMoJ2NvbV9jaXQnID0gJ2NvbScpKSAlPiUKICBpbm5lcl9qb2luKGNvbV9uYW1lc19iaWIgJT4lIHNlbGVjdChjb20sIGxhYmVsLCBjb2wpLCBieSA9IGMoJ2NvbV9iaWInID0gJ2NvbScpKSAlPiUKICBtdXRhdGUod2VpZ2h0ID0gMSkgJT4lCiAgcmVuYW1lKGZyb20gPSBsYWJlbC54LAogICAgICAgICB0byA9IGxhYmVsLnkpICU+JSAjIGdlbmVyaWMKICBzZWxlY3QoZnJvbSwgdG8sIHdlaWdodCwgY29sKSAlPiUgCiAgZHJvcF9uYSgpICU+JSAKICBjb3VudChmcm9tLCB0bywgY29sLCB3dCA9IHdlaWdodCwgbmFtZSA9ICd3ZWlnaHQnKSAlPiUKICBmaWx0ZXIocGVyY2VudF9yYW5rKHdlaWdodCkgPj0gMC4yNSkgJT4lCiAgd2VpZ2h0X2phY2NhcmQoaSA9IGZyb20sIGogPSB0bywgdyA9IHdlaWdodCkgJT4lIAogIHNlbGVjdCgtd2VpZ2h0KQoKZWxfMm1fdG9waWMgPC0gdGV4dF9sZGFfZ2FtbWEgJT4lIHNlbGVjdCgtdG9waWMsIC1jb2wpICU+JQogIGxlZnRfam9pbihNX2JpYiAlPiUgc2VsZWN0KFhYLCBjb20pICU+JSBkcm9wX25hKGNvbSksIGJ5ID0gYygnZG9jdW1lbnQnID0gJ1hYJykpICU+JQogIGlubmVyX2pvaW4oY29tX25hbWVzX2JpYiAlPiUgc2VsZWN0KGNvbSwgbGFiZWwsIGNvbCksIGJ5ID0gYygnY29tJyA9ICdjb20nKSkgJT4lCiAgcmVuYW1lKGZyb20gPSBsYWJlbC55LAogICAgICAgICB0byA9IGxhYmVsLngsCiAgICAgICAgIHdlaWdodCA9IGdhbW1hKSAlPiUgIyBnZW5lcmljCiAgc2VsZWN0KGZyb20sIHRvLCB3ZWlnaHQsIGNvbCkgJT4lIAogIGRyb3BfbmEoKSAlPiUgCiAgY291bnQoZnJvbSwgdG8sIGNvbCwgd3QgPSB3ZWlnaHQsIG5hbWUgPSAnd2VpZ2h0JykgJT4lCiAgZmlsdGVyKHBlcmNlbnRfcmFuayh3ZWlnaHQpID49IDAuMjUpICU+JQogIHdlaWdodF9qYWNjYXJkKGkgPSBmcm9tLCBqID0gdG8sIHcgPSB3ZWlnaHQpICU+JSBzZWxlY3QoLXdlaWdodCkKCiMgZ3JhcGgKZ18zbSA8LSBlbF8ybV9rYiAlPiUgCiAgYmluZF9yb3dzKGVsXzJtX3RvcGljKSAlPiUKICBhc190YmxfZ3JhcGgoZGlyZWN0ZWQgPSBUUlVFKSAlTj4lCiAgbGVmdF9qb2luKG5sXzNtLCBieSA9ICduYW1lJykgJT4lCiAgbXV0YXRlKAogICAgbGV2ZWwgPSBjYXNlX3doZW4oCiAgICAgIHR5cGUgPT0gIktCIiB+IDEsCiAgICAgIHR5cGUgPT0gIlJBIiB+IDIsCiAgICAgIHR5cGUgPT0gIlRQIiB+IDMpLAogICAgY29vcmRfeSA9IDAuMSwKICAgIGNvb3JkX3ggPSAwLjAwMSArIDEvKG1heChsZXZlbCktMSkgKiAobGV2ZWwtMSkKICAgICkgICVOPiUKICBmaWx0ZXIoIWlzLm5hKGxldmVsKSkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyMgQnVpbGQgc2Fua2V5IHBsb3QKZmlnIDwtIHBsb3RfbHkodHlwZSA9ICJzYW5rZXkiLCAKICAgICAgICAgICAgICAgb3JpZW50YXRpb24gPSAiaCIsCiAgICAgICAgICAgICAgIGFycmFuZ2VtZW50ID0gInNuYXAiLAogIG5vZGUgPSBsaXN0KAogICAgbGFiZWwgPSBnXzNtICVOPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwobmFtZSksCiAgICB4ID0gZ18zbSAlTj4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGNvb3JkX3gpLAogICAgeSA9IGdfM20gJU4+JSBhc190aWJibGUoKSAlPiUgcHVsbChjb29yZF95KSwKICAgIGNvbG9yID0gZ18zbSAlTj4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGNvbCksIAogICAgcGFkID0gNAogICksIAogIGxpbmsgPSBsaXN0KAogICAgc291cmNlID0gKGdfM20gJUU+JSBhc190aWJibGUoKSAlPiUgcHVsbChmcm9tKSkgLTEsCiAgICB0YXJnZXQgPSAoZ18zbSAlRT4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKHRvKSkgLTEsCiAgICB2YWx1ZSA9ICBnXzNtICVFPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwod2VpZ2h0X2phYyksCiAgICBjb2xvciA9IGdfM20gJUU+JSBhc190aWJibGUoKSAlPiUgcHVsbChjb2wpICU+JSBjb2wycmdiKCkgJT4lIGFzLm1hdHJpeCgpICU+JSB0KCkgJT4lIGFzX3RpYmJsZSgpICU+JSAKICAgICAgbXV0YXRlKGNvbF9yZ2IgPSBwYXN0ZTAoJ3JnYmEoJywgcmVkLCAnLCcgLCBncmVlbiwgJywnLCBibHVlLCAnLDAuNzUpJykpICU+JSAgcHVsbChjb2xfcmdiKQogICAgKQopICU+JSAKICBsYXlvdXQodGl0bGUgPSBwYXN0ZSgnS25vd2xlZGdlIEJhc2VzLCBSZXNlYXJjaCBBcmVhcyAmIFRvcGljczonLCB2YXJfaW5zdCwgJ0ZpZWxkIGFyb3VuZCBEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICBtYXJnaW4gPSBsaXN0KGwgPSA1MCwgciA9IDUwLCBiID0gMTAwLCB0ID0gMTAwLCBwYWQgPSAyKSkgCmBgYAoKCiMjIEpvaW50IE92ZXJ2aWV3IG92ZXIgS25vd2xlZGdlIEJhc2VzLCBSZXNlYXJjaCBBcmVhcywgYW5kIFRvcGljcwoKVGhpcyBwbG90IHNob3dzIHRoZSBjb25uZWN0aW9uIG9mIHB1YmxpY2F0aW9ucyBpbiB0aGUgcmVzZWFyY2ggYXJlYXMgdG8ga25vd2xlZGdlIGJhc2VzIChieSBjaXRhdGlvbnMpIGFuZCB0b3BpY3MgKGJ5IGdhbW1hLCBkb2N1bWVudC10b3BpYyB3ZWlnaHQpCgpgYGB7ciwgZmlnLmhlaWdodD0gMTAsIGZpZy53aWR0aD0xNX0KZmlnCmBgYAoKCgojIFRyZW5kcyAKCmBgYHtyfQp1bmlfc2ltIDwtIHJlYWRfcmRzKHBhc3RlMCgnLi4vLi4vdGVtcC91bmlfc2ltXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgojIyBMZWFkLUxhZyBBbmFseXNpcyAKCmBgYHtyLCBmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD03LjV9CmRlc2MgPC0gdW5pX3NpbSAlPiUgCiAgZmlsdGVyKEFVX1VOID09IHBhc3RlKHZhcl9pbnN0LCB2YXJfZGVwdCkpICU+JQogIG11dGF0ZShkZXNjID0gcGFzdGUwKCdOOiAnLCBuLCAnIFxuJywKICAgICAgICAgICAgICAgICAgICAgICAnU2ltaWxhcml0eSB0byBwYXN0OicsIHNpbV9wYXN0ICU+JSByb3VuZCgyKSwgJyBcbicsCiAgICAgICAgICAgICAgICAgICAgICAgJ1NpbWlsYXJpdHkgdG8gZnV0dXJlOiAnLCBzaW1fZnV0dXJlICU+JSByb3VuZCgyKSwgJyBcbicsCiAgICAgICAgICAgICAgICAgICAgICAgJ0xlYWQtTGFnIFNjb3JlOiAnLCBmdXR1cmVfdHJlbmQgJT4lIHJvdW5kKDIpKSkgJT4lIHB1bGwoZGVzYykKICAKICAKdW5pX3NpbSAlPiUKICBzbGljZV9tYXgob3JkZXJfYnkgPSBuLCBuID0gMTAwKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzaW1fcGFzdCwgeSA9IHNpbV9mdXR1cmUpKSArCiAgZ2VvbV9tYXJrX2VsbGlwc2UoYWVzKGZpbHRlciA9IEFVX1VOID09IHBhc3RlKHZhcl9pbnN0LCB2YXJfZGVwdCksIGxhYmVsID0gQVVfVU4sIGZpbGwgPSAncmVkMScpLCBkZXNjcmlwdGlvbiA9IGRlc2MpICsgZ3VpZGVzKGZpbGwgPSBGQUxTRSkgKwogICNnZW9tX3BvaW50KGRhdGEgPSB1bmlfc2ltICU+JSBmaWx0ZXIoQVVfVU4gPT0gcGFzdGUodmFyX2luc3QsIHZhcl9kZXB0KSksIAogICMgICAgICAgICAgIGFlcyhzaXplID0gbiksIGNvbCA9ICdkYXJrcmVkJykgKyAKICBnZW9tX3BvaW50KGFlcyhzaXplID0gbiwgY29sID0gZnV0dXJlX3RyZW5kKSwgYWxwaGEgPSAwLjUpICsKICBnZW9tX3RleHRfcmVwZWwoIAogICAgZGF0YSA9dW5pX3NpbSAlPiUgc2xpY2VfbWF4KG9yZGVyX2J5ID0gbiwgbiA9IDUpICU+JSBmaWx0ZXIoQVVfVU4gIT0gcGFzdGUodmFyX2luc3QsIHZhcl9kZXB0KSksICMgRmlsdGVyIGRhdGEgZmlyc3QKICAgIGFlcyhsYWJlbCA9IEFVX1VOKSwKICAgIGJveC5wYWRkaW5nID0gMSwgbWF4Lm92ZXJsYXBzID0gSW5mKSArCiAgZ2VvbV9hYmxpbmUoaW50ZXJjZXB0ID0gMCwgc2xvcGUgPSAxLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2wgPSAnc25vdzMnKSArCiAgc2NhbGVfY29sb3VyX2dyYWRpZW50KGxvdyA9ICJibHVlIiwgaGlnaCA9ICJyZWQiLCBuYW1lID0gIkxlYWQtTGFnIFNjb3JlIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdib3R0b20nKSArCiAgbGFicyh4ID0gJ1NpbWlsYXJpdHkgdG8gcGFzdCcsCiAgICAgICB5ID0gJ1NpbWlsYXJpdHkgdG8gZnV0dXJlJywKICAgICAgIHRpdGxlID0gcGFzdGUoJ0ZpZWxkIExlYWQtTGFnIEFuYWx5c2lzOicsIHZhcl9pbnN0LCB2YXJfZGVwdCwgc2VwID0gJyAnKSwKICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgIGNhcHRpb24gPSAneCBhbmQgeSBheGlzJykKIyArIGxpbXMoeCA9IGMoMC42MjUsIDAuNzI1KSwgeSA9IGMoMC42MjUsIDAuNzI1KSkKYGBgCgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVYVCBQQVJUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CgojIENvbGxhYm9yYXRpb24gCgpgYGB7cn0KZWxfaW5zdCA8LSByZWFkUkRTKHBhc3RlMCgnLi4vLi4vdGVtcC9lbF9pbnN0XycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgoKYGBge3J9CmdfaW5zdCA8LSBlbF9pbnN0ICU+JSBhc190YmxfZ3JhcGgoZGlyZWN0ZWQgPSBGQUxTRSkgJUU+JQogIGZpbHRlcih3ZWlnaHQgPj0gY3V0b2ZfZWRnZV9jaXQgKSAlTj4lCiAgZmlsdGVyKCFub2RlX2lzX2lzb2xhdGVkKCkpCmBgYAoKIyMgQ29sbGFib3JhdGlvbiBuZXR3b3JrIAoKYGBge3IsIGZpZy5oZWlnaHQ9IDEwLCBmaWcud2lkdGg9MTV9CmdfaW5zdCAlTj4lIAogIG11dGF0ZShjZW50ID0gY2VudHJhbGl0eV9kZWdyZWUod2VpZ2h0cyA9IHdlaWdodCkpICU+JQogIGZpbHRlcihuYW1lID09IHBhc3RlKHZhcl9pbnN0LCB2YXJfZGVwdCkgIHwgcmFuaygtY2VudCkgPD0gMTAwICkgJT4lCiAgZ2dyYXBoKGxheW91dCA9ICJmciIpICsgCiAgZ2VvbV9lZGdlX2xpbmsoYWVzKHdpZHRoID0gd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAjY29sb3IgPSAuTigpJG5hbWVbZnJvbV0gPT0gcGFzdGUodmFyX2luc3QsIHZhcl9kZXB0KSB8IC5OKCkkbmFtZVtmcm9tXSA9PSBwYXN0ZSh2YXJfaW5zdCwgdmFyX2RlcHQpLAogICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAod2VpZ2h0ID49IHdlaWdodCAgJT4lIHF1YW50aWxlKDAuMjUpKSkKICAgICAgICAgICAgICAgICAsIGFscGhhID0gMC4yNSkgICsgCiAgZ2VvbV9ub2RlX3BvaW50KGFlcyhzaXplID0gY2VudCksIGNvbCA9ICdzdGVlbGJsdWUxJykgICsgCiAgZ2VvbV9ub2RlX3RleHQoYWVzKGxhYmVsID0gbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBjZW50LAogICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAoY2VudCA+PSBjZW50ICAlPiUgcXVhbnRpbGUoMC44KSkpLCByZXBlbCA9IFRSVUUpICsKICAjdGhlbWVfZ3JhcGgoYmFzZV9mYW1pbHkgPSAiQXJpYWwiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gJ2JvdHRvbScpICsKICBzY2FsZV9lZGdlX3dpZHRoX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDAuNSwgNSkpICArCiAgc2NhbGVfZWRnZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImdyZXkiLCAicmVkIiksIG5hbWUgPSAnMXN0IGRlZ3JlZScpICsKICBzY2FsZV9zaXplKHJhbmdlID0gYygwLjUsMTApKSAKYGBgCgojIEVuZG5vdGVzCgpgYGB7cn0Kc2Vzc2lvbkluZm8oKQpgYGAKCjwhLS0tCiMgU2VlZCBBcnRpY2xlcwoKKipOb3RlOioqIFRoZSBzZWVkIGFydGljbGVzIGRlZW1lZCByZXByZXNlbnRhdGl2ZSBmb3IgdGhlIGFjdGl2ZSBhcmVhcyBvZiByZXNlYXJjaCBpbiB0aGUgaW5zdGl0dXRpb24sIGFuZCBpbmNsdWRlIGF1dGhvcnMgYWZmaWxpYXRlZCB3aXRoIHRoZSBpbnN0aXR1dGlvbi4gVGhlIGRlcGFydG1lbnRzIHJlc2VhcmNoIGZpZWxkIGlzIGlkZW50aWZpZWQgYnkgc2VsZWN0aW5nIHRoZSAyMDAwIG1vc3Qgc2ltaWxhciBwdWJsaWNhdGlvbnMgdG8gdGhlIHNlbGVjdGVkIHNlZWQgYXJ0aWNsZXMuIFNlZSBgVGVjaG5pY2FsIGRlc2NyaXB0aW9uYGZvciBhZGRpdGlvbmFsIGV4cGxhbmF0aW9ucy4KCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpzZWVkIDwtY29udmVydDJkZihmaWxlID0gcGFzdGUwKCcuLi8uLi9kYXRhL3NlZWRzL3Njb3B1c18nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICdfc2VlZF9zZWxlY3QuY3N2JyksIGRic291cmNlID0gInNjb3B1cyIsIGZvcm1hdCA9ICJjc3YiKSAlPiUKICBhc190aWJibGUoKSAlPiUKICBtdXRhdGUoc2VlZCA9IFRSVUUpIApgYGAKCmBgYHtyfQpzZWVkICU+JQogIHNlbGVjdChBVSwgUFksIFRJLCBKSSkgJT4lCiAgbXV0YXRlKEFVID0gQVUgJT4lIHN0cl90cnVuYygzMCksCiAgICAgICAgIFRJID0gVEkgJT4lIHN0cl90cnVuYygxMDApLAogICAgICAgICBKSSA9IEpJICU+JSBzdHJfdHJ1bmMoMzApKSAlPiUKICBrYWJsZSgpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksIGZvbnRfc2l6ZSA9IDEwKQpgYGAKCi0tLT4K